package com.Algorithm.HUAWEI.four20220505;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author: zjz
 * @Date: 2022/06/14/9:51
 * @Description:
 * @Target:
 */
public class 参数解析 {
    /*
    * 在命令行输入如下命令：

    xcopy /s c:\\ d:\\e，

    各个参数如下：

    参数1：命令字xcopy

    参数2：字符串/s

    参数3：字符串c:\\

    参数4: 字符串d:\\e

    请编写一个参数解析程序，实现将命令行各个参数解析出来。


    解析规则：

    1.参数分隔符为空格
    2.对于用""包含起来的参数，如果中间有空格，不能解析为多个参数。比如在命令行输入xcopy /s "C:\\program files" "d:\"时，参数仍然是4个，第3个参数应该是字符串C:\\program files，而不是C:\\program，注意输出参数时，需要将""去掉，引号不存在嵌套情况。
    3.参数不定长

    4.输入由用例保证，不会出现不符合要求的输入
    数据范围：字符串长度：1≤s≤1000
    进阶：时间复杂度：O(n) ，空间复杂度：O(n)
    输入描述：
    输入一行字符串，可以有空格

    输出描述：
    输出参数个数，分解后的参数，每个参数都独占一行

    示例1
    输入：
    xcopy /s c:\\ d:\\e
    复制
    输出：
    4
    xcopy
    /s
    c:\\
    d:\\e

    *
    * */


    public static void main(String[] args) throws IOException {
        BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
        String ss1 = in.readLine();
//        String[] split = in.readLine().split(" \"");

        int count = 0;
        boolean flag = false;
        StringBuffer stringBuffer = new StringBuffer();
        for (int i = 0; i < ss1.length(); i++) {
            // 正常走，遇到空格打印之前的，count计数，如果遇到“那么空格将不在计算，直到下个”
            if (flag==true){
                if (ss1.charAt(i)=='"'){
//                    System.out.println(stringBuffer.toString());
                    count++;
                    flag = false;
                    stringBuffer.delete(0,stringBuffer.length());
                }else {
                    stringBuffer.append(ss1.charAt(i));
                }
            }else {
                if (ss1.charAt(i)==' '){
                    if (ss1.charAt(i+1)=='"'){
                        flag = true;
                        i++;
                    }
                    if (stringBuffer.length()>0){
//                        System.out.println(stringBuffer.toString());
                        count++;
                        stringBuffer.delete(0,stringBuffer.length());
                    }

                }else{
                    stringBuffer.append(ss1.charAt(i));
                }


            }

        }

        if (stringBuffer.length()>0){
            stringBuffer.delete(0,stringBuffer.length());
//            System.out.println(stringBuffer.toString());
            count++;
        }

        System.out.println(count);

        for (int i = 0; i < ss1.length(); i++) {
            // 正常走，遇到空格打印之前的，count计数，如果遇到“那么空格将不在计算，直到下个”
            if (flag==true){
                if (ss1.charAt(i)=='"'){
                    System.out.println(stringBuffer.toString());
                    flag = false;
                    stringBuffer.delete(0,stringBuffer.length());
                }else {
                    stringBuffer.append(ss1.charAt(i));
                }
            }else {
                if (ss1.charAt(i)==' '){
                    if (ss1.charAt(i+1)=='"'){
                        flag = true;
                        i++;
                    }
                    if (stringBuffer.length()>0){
                        System.out.println(stringBuffer.toString());
                        stringBuffer.delete(0,stringBuffer.length());
                    }

                }else{
                    stringBuffer.append(ss1.charAt(i));
                }


            }

        }

        if (stringBuffer.length()>0){
            System.out.println(stringBuffer.toString());
        }



/*        for (String s : split) {
            if (s.charAt(s.length()-1)=='"'){
                System.out.println(s.substring(0,s.length()-1));
            }else {
                String[] s1 = s.split(" ");
                for (String s2 : s1) {
                    System.out.println(s2);
                }
            }
        }*/

    }

}
